package com.warm.androidstudy.view.room.model;

import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import androidx.room.Update;

import java.util.List;

@Dao
public interface PersonDao {
    /**
     * 查询所有数据
     * @return
     */
    @Query("Select * from person")
    List<Person> getAll();

    /**
     * 删除所有数据
     */
    @Query("DELETE from person")
    void deleteAll();

    /**
     * 一次插入单条数据 或者多条数据
     * // @Insert(onConflict = OnConflictStrategy.REPLACE),这个是干吗的呢，下面有详细教程
     */
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insert(Person... person);

    /**
     * 一次删除单条数据多条数据
     */
    @Delete
    void delete(Person... person);

    /**
     * 一次更新单条数据 或 多条
     * @param persons
     */
    @Update
    void update(Person... persons);

    /**
     * 根据字段去查找数据
     */
    @Query("SELECT * FROM person WHERE uid= :uid")
    Person getPersonByUid(int uid);

    /**
     * 一次查找多个数据
     * @param userIds
     * @return
     */
    @Query("SELECT * FROM person WHERE uid IN (:userIds)")
    List<Person> loadAllByIds(List<Integer> userIds);

    /**
     * 多个条件查找
     * @param name
     * @param age
     * @return
     */
    @Query("SELECT * FROM person WHERE name = :name AND age = :age")
    Person getPersonByNameage(String name, int age);

}
